package com.sym.demo.pattern.startegy;

/**
 * 策略模式 startegy Comparator
 * @author suyongming
 * @date ：2021/3/7 16:53
 */
public class StartegyMain {

    public static void main(String[] args) {
        Cat[] catArr = {new Cat(1,1 ), new Cat(5, 5),new Cat(3,3 )};
//        如果 策略相同,需要Cat类实现 Comparable 接口
        Sorter.sort(catArr);

        // 策略模式 不同的类型的排序对比策略
        Sorter<Cat> sorter = new Sorter();
        sorter.sort(catArr,(o1,o2)->{
            if(o1.width > o2.width) return -1;
            if(o1.width > o2.width) return 1;
            return 0;
        } );


        Dog[] dogArr = {new Dog(1 ), new Dog(5),new Dog(3)};
        Sorter<Dog> dogSorter = new Sorter<>();
        dogSorter.sort(dogArr,(o1, o2) -> {
            if(o1.hight > o2.hight) return -1;
            if(o1.hight > o2.hight) return 1;
            return 0;
        } );

        for (Dog dog : dogArr) {
            System.out.println(dog.toString());
        }
    }
}
